package cn.com.w.simple.demo.service;

/**
 * JWT是一种认证协议，提供了一种用于发布接入令牌（Access Token),并对发布的签名接入令牌进行验证的方法。SSO私钥加密token。应用端公钥解密token
 *
 * 一个JWT包含3个部分：
 * - 头部Header：可存放签名的类型
 * - 数据Payload：可存放用户数据和有效期，Payload的内容在接收者端是通过签名(Signature)来校验的。
 * - 签名Signature：使用密钥对Header和Payload数据进行加密生成签名。
 *
 * JWT为了便于http传输，3个部分需再进行Base64Url编码后用"."(英文句号)进行关联，格式如下：
 * "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ"
 *
 * JWT真正的好处是让颁发JWT token的认证服务器和校验JWT token的应用服务器可以完全分开。
 *
 * 完成认证功能步骤
 * 1、用户向认证服务器提交用户名和密码，认证服务器也可以和应用服务器部署在一起，但往往是独立的居多；
 * 2、认证服务器校验用户名和密码组合，然后创建一个JWT token，token的Payload里面包含用户的身份信息，以及过期时间戳；
 * 3、认证服务器使用密钥对Header和Payload进行签名，然后发送给客户浏览器；
 * 4、浏览器获取到经过签名的JWT token，然后在之后的每个HTTP请求中附带着发送给应用服务器。经过签名的JWT就像一个临时的用户凭证，代替了用户名和密码组合，之后都是JWT token和应用服务器打交道了；
 * 5、应用服务器检查JWT签名，确认Payload确实是由密钥拥有者签过名的；
 * 6、Payload身份信息代表了某个用户；
 * 7、只有认证服务器拥有私钥，并且认证服务器只把token发给提供了正确密码的用户；
 * 8、因此应用服务器可以认为这个token是由认证服务器颁发的也是安全的，因为该用户具有了正确的密码；
 * 9、应用服务器继续完成HTTP请求，并认为这些请求确实属于这个用户；
 *
 *
 *
 *
 */
public interface JWTCreateService {









}
